import axios from 'axios'


  // 1.创建axios的实例
  const instance = axios.create({
    baseURL: 'http://localhost:8090/tourism/',
    timeout: 10000
  })
  //设置默认的传入type
  instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
  // 2.axios的拦截器
 
  // 2.1.请求拦截的作用,
  instance.interceptors.request.use(config => {
    console.log('config',config);
    //发送前做些什么,这个config应该是传入的第二个参数 
    if(config.url=='/login')
      return config
    else{
      let token = localStorage.getItem('token')
      if(token){
        config.headers.token = token
      }
      return config
    }
  }, err => {
    // console.log(err);
  })

  // 2.2.响应拦截
  instance.interceptors.response.use(res => {
  
    // if(res.data.code<0)//状态码小于0，查询错误
      // return Promise.reject(res.data.message)
    console.log(res);

    //返回响应得到的数据,到具体调用里面在做判断
    return Promise.resolve(res.data)
  }, err => {
    return Promise.reject(res.data)
    console.log(err);
  })

  export function Get(url, params) {
    return new Promise((resolve, reject) => {
      instance.get(url, {
        params: params
      }).then((res) => {
        resolve(res.data);
      }).catch((error) => {
        reject(error.data);
      })
    })
  }
   
  /**
   *封装post方法
   *@param{String} url 请求地址
   *@param{Object} params 请求参数
   */
  export function Post(url, params) {
    return new Promise((resolve, reject) => {
      instance.post(url, params).then((res) => {
        resolve(res.data);
      }).catch((error) => {
        reject(error.data);
      })
    })
  }
   
  /**
   *封装put方法
   *@param{String} url 请求地址
   *@param{Object} params 请求参数
   */
  export function Put(url, params) {
    return new Promise((resolve, reject) => {
      instance.put(url, params).then((res) => {
        resolve(res.data);
      }).catch((error) => {
        reject(error.data);
      })
    })
  }
   
  /**
   *封装patch方法
   *@param{String} url 请求地址
   *@param{Object} params 请求参数
   */
  export function Patch(url, params) {
    return new Promise((resolve, reject) => {
      instance.put(url, params).then((res) => {
        resolve(res.data);
      }).catch((error) => {
        reject(error.data);
      })
    })
  }
   
  /**
   *封装delete方法
   *@param{String} url [请求地址]
   *@param{Object} params [请求参数]
   */
  export function Delete(url, params) {
    return new Promise((resolve, reject) => {
      instance.delete(url, {
        params: params
      }).then((res) => {
        resolve(res.data);
      }).catch((error) => {
        reject(error.data);
      })
    })
  }
  


  // 3.发送真正的网络请求
  export  {instance} 
